# 1.将之前封装的MyMath类中的实例方法改为静态方法，体会两者的区别

class MyMath(object):

    @staticmethod
    def add(a, b):
        return a + b

    @staticmethod
    def sub(a, b):
        return a - b

    @staticmethod
    def mult(a, b):
        return a * b

    @staticmethod
    def div(a, b):
        return a / b

    @staticmethod
    def exponent(a, b):
        return a ** b

    @staticmethod
    def sqrt(a):
        return a ** (1 / 2)


print(MyMath.add(2, 5))
print(MyMath.sqrt(3))
"""
静态方法和实例方法之间的区别在于：
静态方法可以不需要实例化，类可以直接调用。
实例方法是一定要实例化之后，才可以调用。
"""


# 2.为上节课自定义类添加以下功能:
# * 添加类属性
# * 添加类私有属性
# * 添加类方法获取类的私有属性
# * 添加__init__方法
# * 在__init__方法中初始化实例属性
# * 在__init__方法中绑定私有实例属性
# * 在自定义类中实现__str__.自定义输出格式。


class Car(object):
    wheel = 4
    chassis = True
    __playingmusic = "笑纳"

    def __init__(self, person):
        self.s = "自带天窗"
        self.__person = person


print(Car._Car__playingmusic)

toyota = Car(2)
print(toyota.s)
toyota.s = "一键启动"
print(toyota.s)
print(toyota._Car__person)



class ambulance(Car):
    function = "heal the wounded and rescue the dying."
    def __str__(self):
        return f"My function is {self.function}"

ambulance1 = ambulance(2)
print(ambulance1)
